{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 机器学习建模"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "from sklearn.datasets import make_circles,make_blobs,make_moons"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 无监督学习-聚类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### K-means"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "# 生成数据\n",
    "n_samples = 100\n",
    "circles = make_circles(n_samples=n_samples,factor=0.5,noise=0.05)\n",
    "moons = make_moons(n_samples=n_samples,noise=0.05)\n",
    "blobs = make_blobs(n_samples=n_samples,random_state=8,center_box=(-1,1),cluster_std=0.1)\n",
    "random_data = np.random.rand(n_samples,2),None\n",
    "\n",
    "# 引入模型\n",
    "colors = 'bgrcmyk'\n",
    "data = [circles,moons,blobs,random_data]\n",
    "models = [('None',None)]\n",
    "\n",
    "# 进行聚类并画图\n",
    "def cluster_show():\n",
    "    f = plt.figure()\n",
    "    for inx,clt in enumerate(models):\n",
    "        clt_name,clt_entity = clt\n",
    "        for i,dataset in enumerate(data):\n",
    "            X,Y = dataset\n",
    "            if not clt_entity:\n",
    "                clt_res = [0 for item in range(len(X))]\n",
    "            else:\n",
    "                clt_entity.fit(X)\n",
    "                clt_res = clt_entity.labels_.astype(np.int)\n",
    "            f.add_subplot(len(models),len(data),inx*len(data)+i+1)\n",
    "            plt.title(clt_name)\n",
    "            [plt.scatter(X[p,0],X[p,1],color=colors[clt_res[p]]) for p in range(len(X))]\n",
    "    plt.show()\n",
    "\n",
    "cluster_show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "models = []\n",
    "models.append(('Kmeans',KMeans(n_clusters=3)))\n",
    "cluster_show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### DBSCAN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import DBSCAN\n",
    "models = []\n",
    "models.append(('DBSCAN',DBSCAN(min_samples=3,eps=0.3)))\n",
    "cluster_show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 层次聚类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\condaenv\\py36\\lib\\importlib\\_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
      "  return f(*args, **kwds)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEICAYAAABfz4NwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO2de5QV1Z3vv78+3W1oSVAadSBNH2wbCQ+RXBofN3OzMjaK4gQfFx1Igx3RsAQz0ZlZMWZ6xRDGNiR37iC5jhhGAy3nDMQkKiQiDjBJnPExpE0Ir4zh2dCIDxpFkQ4N3b/7R1V11zmn3rXrdc7+rFWr+1TVqdpn16792/v32sTMkEgkEomkLOoCSCQSiSQeSIEgkUgkEgBSIEgkEolERQoEiUQikQCQAkEikUgkKlIgSCQSiQRAEQsEIvoyEf1n1OXwAhE1EdG/RV0OM2TdBoes22CR9WtNbAQCEf2KiN4nonOiLkuYENEoImIiKtf2MXOWma8TeA9ZtyqybsUQRt2q95H1qxJE/eYTC4FARKMA/C8ADGBGpIURDBGlIr7/KMi6Der+oyDrNsgyjIKs31CJhUAAcAeA1wGsAtCs7SSiaiL6ORF9SES/IaKH9dM9IrqOiN4kohNE9DgR/ZqI7ja6ARH9T/UaJ9S//1N37FfqtV8lopPqPauJKKu79yjd+Z8hok1EdFy9/+26Y6uIaDkRbSCijwH8BRHdSES/U691mIgW6Yr2svr3A/XeV+untUT0BBH9Y95vWUdEf6v+P4KIfkZE7xHRASL6mqxbWbdFULeyfoOv30KYOfINwF4ACwFMBnAGwEXq/rXqVgVgHIDDAP5TPTYMwIcAbgVQDuA+9bt3q8e/rDt3KID3AcxVz52tfq5Wj/9KLcMlAIYA2A3gjwCmquc/DWCleu65ajnuVI/9DwDHAIxXj68CcALA56AI3E8A+AKAy9TPEwG8A+Bm9fxRUEZA5br60Jf98+r9SP18PoBuACPU670B4CEAlQDqAOwHME3WrazbJNetrN/g69ewL46BMPhz9YENUz//N4C/AZBS94/RnfuwrkLuAPCa7hipFWT04OcC2Jp339cAfFn34Ft0x/4vgBd1n78IYJv6/18B+I+8a/0QwLd1D/5pm9/8KIClDh88ATgE4PPq568A+Hf1/ysBHMq79jd1jVTWrazbxNWtrN/g69ds6zdYREgzgH9j5mPq539V962BImkP687V/z9C/5mZmYg6Te4xAkBH3r4OAJ/WfX5H93+3wefB6v9pAFcS0Qe64+UAVpuUE0R0JYAlACZAkdjnAPiJSVlzUH/XWiijl5cBfAlARleWEXllSQH4D/V/WbcWyLqNbd0Csn4tEVC/hkQqEIhoEIDbAaSI6G119zkAzgNwEYCzAGqgTNMAYKTu60fVY9q1SP85j7egVJKeWgAbPRT7MIBfM/O1Fudw3ud/BfAYgBuY+U9E9CiUqa3RuUasAfBvRLQEivS/RVeWA8w8Ov8Lsm4NzzVC1u0AkdctIOvX5FwjPNWvFVEblW8G0AtFDzhJ3cZCkWR3AHgWwCIiqiKiz6j7NF4AcBkR3UyKa9a9AP7M5D4bAFxKRF8ionIi+iv1nr/wUOZfqNeaS0QV6jaFiMZafOeTAI6rD/0KKNJc4z0AfVD0fIYw8+/U854E8BIza5J/K4APiegbRDSIiFJENIGIpkDWLSDrVk9S6haQ9QsEW7+mRC0QmqHotQ4x89vaBkVqNgH4KhRjzttQpl5rAJwGAHUqeRuA7wPogvIg27Xjepi5C8BfAvg79dwHAPylbjrqGGb+CMB1AGZBGWG8DeB7UEYwZiwEsJiIPoJi6HlGd71TAFoBvEJEHxDRVSbXWAPFmPWvuu/2QtFjTgJwAIoR60kodSbrVtat/lpJqVtA1m/Q9WuKZqFOBET0PQB/xszNBsfKAHQCaGLmX4ZeuIQj6zY4ZN0Gi6xfcUQ9Q7CEFL/eiaRwBYC7ADynOz6NiM4jJYrx76FY3l+PqLiJQtZtcMi6DRZZv8ERBy8jKz4JZUo0AsC7UNy+1umOXw1lqlQJxUf4ZmbuDruQCUXWbXDIug0WWb8BkSiVkUQikUiCI9YqI4lEIpGER2xVRsOGDeNRo0ZFXYxY88Ybbxxj5gu8fFfWrz1e61fWrT2yboPDT78QW4EwatQotLe3R12MWENE+VGWjpH1a4/X+pV1a4+s2+Dw0y9IlZFEIpFIAEiBIJFIJBIVKRAkEolEAkAKBIlEIpGoSIEgkUgkEgBSIEgkEolERQoEiUQSCPPmzcOFF16ICRMmGB5XcxH9gIj2EtF2IvofIRdRkocUCBKJJBC+/OUvY+NGy7VmbgAwWt3mA1geRrkk5kiB4INsFhg1CigrU/5ms1GXKCbIikk0oh7f5z//eQwdOtTqlJugrDPMzPw6gPOIaLiXe7ktc9DnJxa7RZej2iZPnsxxJpNhrqpiBga2qiplf1gAaOe41W8cKkYQXus37m3XCtGP78CBAzx+/PiC/VAWrfkFgD/ngYXgtwBo4Lz6hDJ7aAfQXltb67vMQZ8fNX76hcg7frMtDi9VZnuG00vTTIuI00vTnNk+0ALS6dwGom3pdHjli6VAqK62rRireo0TpSgQ/LTrTEY5j0j5m8nYCoQXDATCZHZZt27LHNT5Rr8/Cvz0C7HNZRQ12R1ZzP/5fJw6cwoA0HGiA/N/Ph8A0HRZEw4dMv6e2f6SIJsFurqMj6kVY1evkmjx2q6zWWD+fOCU8ljR0aF8bm21/FongJG6zzVQlp90hdsyi9yfzQItLcrvJVJEBTDw+wGgKUHNWtoQTGjZ0tLfaWmcOnMKLVtaAAC1tcbfM9tfErS0mB9TK8auXiXRYtZ+y8oG9OcLFxbq01taBoSBxqlTwD/+o+Xt1gO4Q/U2ugrACWY+KqrMQe8fOlTp9DvUVHKaMNA4dcr6lYgjUiCYcOiE8bBA29/aClRV5R6rqrIdERU3VsNItWLs6lUSLUbtGgB6e5UOr6MDWL5c+at91neKuczGkSNX480330RNTQ2eeuopPPHEE3jiiSe0EzYA2A9gL4B/gbLovJAyW72LTs/XDMna6D//fKBQCOaTNI2BVBmZUDukFh0nClt57RBluKBNA1talIdeW6s0qCRND4VTW2vcM1RX91eMXb1KoiW/XZeVKcLAilOngFTK6Lw1SKeBgwcLv7NgwQKo+u57RZfZ7l10cn6+Cox5QCWUTivnz5ljX7akaQzkDMGE1sZWVFXkDiOqKqrQ2jgwjGhqUhp7X5/yt6SFAaC8JRUVufsqKoBlywZOcVCvkmjRt+u+Pmff6e2NdsaslXn1auXz3LnW7qF2766RCkwTBpqAy5815JNEjYEUCCY0XdaEFV9cgfSQNAiE9JA0VnxxRWCGT7uoTmbG1772NdTX12PixIn47W9/23+MiJqJaI+6NQdSQKfkvyV5n8OuV4k/nI5w02lgxQrlL9HA5zAHSdqoPl+dZSYUrGIL7AzMLS2FNgM9qVT4v18IXt2Tgt6S7LrnhV//+tf8xhtvGLroMTO/8MILfP3113NfXx+/9tprfMUVV2iue0Oh6GGHAjhf/f98jqJ+4+CLKxCUoNtpPkY++PmbF5/8IOrWTfOziy2wuxaR2PoQide6ZWYxMwQi+hERvUtEO02OxzZnSXZHFqMeHYWy75Rh1KOjkN1hHYIYVMSiXVTnunXrcMcdd4CIcNVVV+GDDz4AgAoA0wBsYubjzPw+gE0ArhdTKpdIX9zEYtaum5oKR/4LFihmIY1Tp4D77os+etdN8zPzitK8guwMz2Yzp8TODFREqYxWwboTimXOEs0nvuNEBxjc7xNvJhTMpqRGbniiOXLkCEaOHHDZrqmpARSB8GkAh3Wndqr7CiCi+UTUTkTt7733nvhCSl/cRGKnasnXt3/uc8BHH+Veo6sLuOMOYNiw6NI7uGl+dsLDSBDqO3ozgdHWllxhAAgSCMz8MoDjFqcIy1kiErc+8WajiieecK639AqbKyyNTFuGJzPzCmZuYOaGCy64QFjZ+mltBSorc/dVVibPslZi2I2Wjc7v6Snc39enCIYg3wMr3LifOhEeVoZnO4GRVMIyKjsaxQY+gs3DrU+82agiv68OIiClpqYGhw8PVGFnZycAnIGgaE9h5FeGleVNEgtERe7mE3ZglptOWkQcUTF6GYYlEByNYgMfweZh5vteRmWGNgU3mg/RavMZM2bg6aefBjPj9ddfx5AhQwBFILwE4DoiOp+IzgdwnbovHDTlM5HimH3mTO7xM2cMewW3tpsgsPPsAoC42r5EIipy14iwzUdOO+liHeH7JSyBEK9RrIqRTzwA9HKvoU3BaFRh5ovsVm0+e/ZsXH21eVTn9OnTUVdXh/r6enzlK1/B448/DgBg5uMA/gHAb9RtsbovePTKZys6OnKUym5tN0HhIF//EMTQ9iUat6Pl6dOdXzvO5iM74VEyKa/1eHVPyt8AjAKw0+TYjQBehDJTuArAVrvrheW6p8+8mfpOirEIBVt6aXrg/LyMhgsWRJcaF1FnOzXLbGrjj5demrat57Awy8bJzAzgPQCzeaAdvwlgOIdRtyHjNFNnY6Pzx01kfh2vbTe0fsFnyusoM5/66RdEuZ2uAfAagDFE1ElEdxHRPUR0j3qKkJwlQdB0WRMO3n8Qfd/uQx8bh2XqbQr5o4rHHy/RqadVZlMzVKVygvIZVSAuHlwB40TVsnAhsGWL82syJ/c9cGto1+M2QC5OCMllxMyzbY4LyVkSNF7z7DQ1Jbfhe8aDtTB7GfD3jR3GLlBQbDfZHdm4Ry2benABWAEADQ0NRWlJX7HC3fnpdDDlCAM/BnUrYRL3fqLkUldYGTO95tkpSV2j3ZuRZ1zJXgbM/yJw6Dzzr/RybyS2BAvOIIa2ryjIZu2T3OlJYh4fPX4M6kmOzywpgWBnzPSSZ8dueliUwiKbVX6QGek0cM89OZbKlkbgVKX5VzRitjbCBxCQrz/paG3cjurqZKlNrd5NP26pSY7PLCmB4CQQTW9TOHj/QVv1hdX0MMm6RFO0H2U0XKyqAjKZAuNKH4BDQ5zfIixbgp1nF4ATiKntK0yM2rgRWlAaALzySnQDISeDMCfR2V5tg0leK4U4poFDDQ0N3N7eLvSaZd8pAxuogAmEvm87zPObf80y49grIvPlAcxyxLuFiN5g5gYv3/Vcv9qKIfmkUqZx+2b1bkZ6SBoH7z/ovmyC8Vq/QbTdKDFr426oqsrtUIOq2/x1DIzunc0Czc3GYxpR76a2ilwUa6X46RdKaoZgZhz2sziL1fQwybpEU8wK39trmoTeTf0SCNNHu3B0lwSGNtIWMWYMK2rZzjvIaoILiHs3kxrFXFICIYjFWaymh0nWJZpiVXgTvZhZAOC5Feei8eJGkC6QncFo+31bnAzLJYnTmEM3hDEQcrKOgZX6yyLhcElQUgIBAAaVD+r/v3pQte/FWax0jUnWJZpituiunrzhoJGxPnNrBif//iT2Ht9boE6KmWG5JHFqN3BDGAMhu0GYnVD66KOE2/h8UjICQfMw6uoeCKbqPtst5Npm08OiyZeit9K1tCgKWO1HmZH35pkZ680MyEbxIJLwED2aD2sg5HUdA42eHiUlV9F4BLqkZASC21TXokiqLrEfI3eMtjblDevrM48+cjgcNLMvEEiqjSJE1Gg+7IGQl3UMjCgKj0APFLVA0AehmY04Y5guIV6YWem0YdT06b70Yq2NrTk2BA0GS7VRhDjtOK1Ip6MZCDldx8COsNN3x4GiFQj5QWhm+PEwKgmsdAfabEGvQnI5HGy6rMn0+UhhHR1ax5lKeft+nG1lmsDIZOyFXqI9Aj1QtALBSEWUj18Po5LATndw6hSwYYMvvVh6iPFwTQrraGlqUuS925lCUmxlTmYLZWXxUxsFmf2gaAWC1ejSaVoKCZzpDnwOo1obW1FRVpGzr6KsQgrrCNE6nblzgUGDlLQUTtACu+ImDMw6UbvZQm9vvGwJQWc/KFqBYDa6TA9JO05LIYGzYZQACyTleSzlf5aER36n09UFdHcrnaadYIijisVJJ2qlIouTLcFPWm4nFK1ACCIITRSJS3hnNYwSoCxu2dKCnt7cVdt7ensw59k5kS2vWcqYdTrNzfZLYMQx6NJpJ9rUpGg9jYiLoAs6+0FRCQS9V1HLlhY0X97sKnNpKGXMAvPm5Y5W5s1LgFAAAgussFLvRbW8ZiljlZ3Eirgakt10onHPLhB0+YpGIBiltm77fRtaG1tjpSK67z4l+EVPT4+yP/YElLHLzngsI5fDxUvnUl0dX0Oym040jOwCfjQEQZevaARCVIFnbjGbcrtdjTJ0ArRmmeU60iNdUMOjtdU6CF0PEbBgAXDsWDyFAeCuE/U7Cbbr7P2+RkFnPygagZCgdXqThdbC58wJzJqlz3VkhnRBDY+mJucZTpkVr2MjNm7ciDFjxqC+vh5LliwpOE5EtUT0SyL6HRFtJ6JA0tzadaL5nTgwkJzy0KGBtU3scNLZizAKB5r9gJljuU2ePJndkF6aZixCwZZemnZ1naCprmZWmkvu9slPvsiXXnopX3LJJfzd73634Hv3338/X3755Xz55Zfz6NGjeciQIQygnZU3txfANnVbz6LqN5NhrqoyLrC2EQmrG2bmzPYMV7VW5TzDqtYqzmzPCL2PE7T6dbu5bbtxJJ22fux2TeDs2bNcV1fH+/bt49OnT/PEiRN5165d/ccBtENZg3qB8hHjABzkkOvWqIlXVDBXVubuq6pSzrXCrM7S6YFziIJ/jby2W2YunhlCnL2K9CxbBlTkutyjvLwXgwbdixdffBG7d+/GmjVrsHv37pxzli5dim3btmHbtm3467/+a9x66636w93MPEndZggrrJOUl4KtbV6WMZWIx03qCqMmsHXrVtTX16Ourg6VlZWYNWsW1q1bl38aA/iU+v8QRLBetVETP3Om0M7nZBTvxHgdd6N10QiEpHQkTU3AypW509eWlq2YNMn25elnzZo1mD17dvCFtfNlC8itxO0yphLxGKlZFixwros/cuQIRo4c2f+5pqYGR44cyT9tEYA5RNQJYAOAvzYqCxHNJ6J2Imp/7733fPyqQty4a9qd66Szj3tK/KIRCEByOpJ8HeCECY5eHgBAR0cHDhw4gGuuuUa/+xPqC/M6Ed1sdl/XL5bVsCUp+Qkknslvp7plsm0NmormIheDYMPZAFYxcw2A6QBWE1FBn8TMK5i5gZkbLrjgAv8/TIebkbnduU46+6CN1n4pKoGQVBy+PACAtWvXYubMmUjlhlTWsrKG6pcAPEpEl5jcx92LZdbCM5lA8hPo40hkQFo8cWrQrKmpweHDh/s/d3Z2YsSIEfmn3QXgGQBg5tcAfALAMPGlNseoiVdUAJWVufuIFCOxVSfstLP3ahQOOm0FIAVCLHD48gBQBEK+uoiZ31L/7gfwKwCfFVKwEFf4MYojkQFpyWXKlCnYs2cPDhw4gJ6eHqxduxYzZhSYtw4BaAQAIhoLRSCI1QnZYNTEV64EfvSjgWwtRANeV3adcJAeQEGnrQBQPF5GSSST0TwTznB5+cX8T/+0v98jY+fOnQXn//d//zen02nu6+tj5n5PjfMBnKN8xDAAewCM44TVbxy9xFDCXkYieOGFF3j06NFcV1fHDz/8MDMzf+tb3+J169ZpbXccgFcA/B6Kh9x1HLO6NfMcqq5WjhEpf+08kETg1EPJa7tlZpQLlC0SF2jTP0Xil+Ps2cfwd383DUuW9OJrX5uH8ePH46GHHkJDQ0P/yGrNmjWYNWtWvjppLIAfElEflBnfEmbenX+/uCPjSIqP6dOnY/r03NCCxYsX9/+vttPPhVwsV5gZkru6BoJJtVkD4G1G4CQBQDar2A2M0oeI9FAqGoGQ3ZFFy5YWHDpxCLVDatHa2BpbozJgNP2bDubpGDRoYAqof3kAYNGiRQXXYeZXAVwWVDnDonZIreGqdjIgTRIltbVKh2+HprpxKxByB4bGwkU7x0gYiPZQKgobQhL1z0FnLUwaSYkjkZQWbuIxvLy7TuwCZuFAqZR4k15RCISk5DHSE/cAFQDAwoVAebliVSsvVz4HhFEcSfPlzWjZ0iK9jiSRYWR0NlsTwsu762RgaHZOX594/46iEAhJ1D/HPUAFCxcCy5cPzFN7e5XPAQuFg/cfxOpbV+Nkz0ksb1+eqFmfpDjJ9xxatkzcu+tkYBjm4LEoBIKZnjnO+ucQPTq9sWKFu/2C0NR/Xd2F6V/jPuuTlAYi310nA8MwB49FIRCSqn8281mOfEW1bNZ8NRS7VVJ8YqT+0xPnWZ9E4hYnwiXMwWNRCIQw8xgF3VmHEY3oqABmGC06KxC7Dj/Osz5JaSD6HXUSzBZoymsdRSEQgHDyGIXRWYcSjei2AHqshIUArDr8JMz6JPEiiHQokb+jASJEIBDR9UT0JhHtJaIHDY5/mYjeI6Jt6na3iPuKxEnDCaMhRO6OanWjBQuUDGcBYrZ6WvWg6kBmfQ4WcYl925UYY+SOPvfZuaDvkC/hEPk7GiC+BQIRpQD8M4AboISizyaicQan/pgHcvY/6fe+InEax2D2wJ0ErjglcndUsxul066EgdeRmZH6L3NrBsceOCZcGPT29uLee63XoVCJbduVmGNkj2IoSYn8eK2F/Y6GaVMUMUO4AsBeZt7PzD0A1gK4ScB1Q8MsjqH5ueacBmP2wInEPaTI3VEFFMBvoGDQ6j/tBSsv34q33qrHa685W4dCkizs7FFevdbCfEfDtimKEAifBnBY97lT3ZfP/1bXTf0pEY00OO5pIQwROkKzhtPLvTkdWV5aln6YxamNIndHFVCAOAcK6l8w4Aj+9KeR/S+YxToUgbRdiXj0/UFZ4dIKBXjxWgvzHQ3bXiFCIBgl7s9P8P9zAKOYeSKAzQDajC7ELvP1i0pZYWXI1HdkZouJA2L1h2F5FDgqQGur0vpczFfjHCiY+4IpzVT/ghmsQxFI25WIJ78/6GV7F2mvXmthvaNh2ytECIROAPpRUw3y1kZl5i5mPq1+/BcAkwXc1/dIVBtNdJzoABnKNYWOE4cwapS1rSBWKSdE4XG+GudAwdwXqQba5PbQIeN1KIJquxLxmMWwpEhxlc5/x5PgtRa2vUKEQPgNgNFEdDERVQKYBWC9/gQiGq77OAPAHwTc19dIVD+aAAaMTQVsnw3830O2hmMzdVKi8ThfjXOgYO6LNAXK8hEHMHKk8SIuQbVdiXjM3vs+7gN/m7H61tWxX3M9n7Btir4FAjOfBfBVAC9BeVmeYeZdRLSYiLS362tEtIuIfg/gawC+7Pe+gL+RqNloImcUsX028PN/AT6qsb1eW1sEEcVB43G+GmagoFtyX7ByAI+BaBr+9KexuP322/vXoVi/vn9ME0jblYjHrj+I85rrZp5EodsUva6sE/TmZGWkzPYMV7VW5aywVdVaxZnt9ssX0SIyXKFLW6WLFhGnzj9suEKR2Rb2KkrwsTKSo5WnzJaLSqfF/xgdme2Z/meQXpp29DxdXT/j7Dl5rV+5Ypo9QdStn/6g4FoO24gIMhnmqqrcV6yqyvs9/fQLiY1U1hbEOXXmVL+O0M1I1Gw0kR6S7h9F9H1gPzPQ09UVYcqJIIjABzaMtS0iN9pLAkHUzDRsV884RT4nUiDk6/97ubdfR+304TvRc/s13CQ+nD0CH9g4u6xK4o8ItVDYHXScIp8TKRBEdBpORhNGA2QioLEx2FWUYkXIw+k4u6xKSgOvHbTXiOLIsxPoSKRAENVp2I0mjAbIq1cDmzcr+81WTtIzdKi7RhJ56uuIibPLqqQ08NJB+1EzRZ6dQEciBUKYnYbZALmpCRg82Pq7lZXAhx86ayQbN27E8OFjMHduPTo6lhScv2rVKlxwwQWYNGkSJk2ahCefHEipQ0TNRLRH3ZqF/fgIiLPLqqQ0cNpB6wdvzc3e1UyRZyfQ49UaHfQWljeBH4jMPY7SacXryImTztmzZ7muro5HjNjHwGkGJjKwK+f8lStX8r333pvzPQDtAIYC2K/+PV/9/3xOsCdM0F5GToH0MgqMKOvWSfuy8zIy8gwy2oh8F9c1XuuWk+plFBc/d6vEoAcPAsePGx/P10Vu3boV9fX1OHq0DoAW27fO9Pw8pgHYxMzHmfl9AJsAXO/oB8SUOPuLSwxIkJ7TqRebnenMbtkQjaRlMEikQADEdRp+kuMZTS0Bxf102DBljGBEfiM5cuQIRo4cqdtfA+BIwfk/+9nPMHHiRMycOROHD/fnE3SaXFAiEYNeAAwbBsyblxh/a1FebE6cRaKyA/ghsQJBBH4X0NB0f/nG5ZMnFaFghFEjYVVy5AoYyjn/i1/8Ig4ePIjt27dj6tSpaG5uzj0x75JG95YZOSW+ybeednUBPT2558TY31qUQ4rZyD+VMrYDJGUSVdICQcQCGk6MyxpmxqKamhocPny4X8Ccd14ngBE551dXV+Occ84BAHzlK1/BG2+8oX3dNrlg/28LMSNnEEsXSmKAU11JTP2tRTmkmBme29oK1UxGHkhz5yqCI27CoaQFgqgFNJy0fSJzN/4pU6Zgz549OHDgAG67rQe1tWuxc+eMnPOPHj3af/769esxduxY7eNLAK4jovOJ6HwA16n7IiOMaGNJRDjt6GOqPBflxebGM8hIhmrq5Lhp2EpaIDgZFTiZSjpp+1bnlJeX47HHHsO0adMwdqxxkrUf/OAHGD9+PC6//HL84Ac/wKpVqwAAzHwcwD9AyTr7GwCL1X3e8Tm/ldHGRYyTxh5j5blIhxSnMZt2MvTUKeC++1zfPhCIzSyfEdPQ0MDt7e2B3kMbyRplPdXQchtZXkedEprNpKuqgvErJqI3mLnBy3dN69fox7j8AWXfKTNMJ04g9H27z0txI8Fr/YbRdiPDqH1UVACf+pTiVldbqwgDm7ZSSnVrt5aKRiYjpo/w0y+U9AxBP1oAvC+gkT99rK5WtsiDTLwgIJFLEqKNk2Lkix1GupKVK4FjxwqGyhs3bsSYMWNQX1+PJUuWGF6OiG4not1qivF/DfGXhIaZN2I+sbDDewmnBZ4AACAASURBVA1gCHqLIrgnLgFRTkEQ6a/Nou1cRNjEJXDQDKfphr3WrwxMGwi23LdvH58+fZonTpzIu3bt6j8OJahyNIDfQQ2kBHAhe6jbuLy3VsFs2rEwgtj89AuRd/xmW5wffBg4ycceiEAQtAZCnJ+V058oBYJ3Xn31Vb7uuuv6Pz/yyCP8yCOP9H9WBcL3AdzNPuo2LoMPN2saOM1g4BU//UJiVEal5LkSdj72HMzWAnW5Rmico43jlG44kTjQt2nBlho1NTU4cuRI/mmXAriUiF4hoteJyDDC3ip+Ji4ODG40rcuWxSeZXT6JEQiiHvzCFxaifHE56DuE8sXlWPjCQpHFFEIkC2ZoL/ny5cbHN2wI8ObhEqd0w7EjPwp52LCBjn/hQuXznDm2oxV++WXgxz8e+O6rr4KoIIayHIra6AsAZgN4kojOyz+JLeJn4pIu3c0gI1bJ7PJIjEAQ8eCnPj0Vy9uXo5d7ASgL6yxvXx47oRD6CFY/JTGjiIbPcUo3HCuMopC7ugY6/uXLjUPw80cr2SxqVqzA4ZMn+7/b+dRTGPHuu/nf7ASwjpnPMPMBAG9CERCOicqBIX+SNHSo8Xlmg4y4rtqXGIHg98Fnd2Sx5cAWw2Mr3ljhuVxBEPoI1kn0aQTD56A8geI8QosUp1HIRugHEy0tmHL6NPYAOACgB8DaM2cw4z/+I/9bzwP4CwAgomFQVEj73dw2inTpRirdDz9U0t3nlCOBg4zECAS/D95KtaTNGOLC9OlKR6Un0MZlN/qPoGUbvXRz5gBTp4q5flxHaJHiZxaYSuVcpxzAY1BS8Y4FcDuA8W+/nRNsCSWivouIdgP4JYCvM7NJFjBj/AaaeUmxYiQ3z5wBPvnJ5A8yEiMQ/D54K9VSilKmx8Imm1XyobAurotIWYAjsMZlNfqPqGWbDVa3bFFU2X6RcQgG+JkF9uoGVep1pgP4I4B9AFrU/YsXL8aMGTMAAKpTzN8y8zhmvoyZ13ovgHu8OqqYyc3jx5M/yEiMQAD8ea5YqZbmT54vong5eO1wzPKeBGrTNVOqZzKRtWyrweoKnxq+SL244ozTCCoj0mnr6wQ0y/TjfejVUaWYnRISJRD8YKRyAoDGixvx+I2PC72Xnw4nEpfIGCrVrV6uXp8avki8uJKAvh24Re+WHGJ78uN96NVRpZidEkpGIBipnDK3ZrD5js3C7+Wnw4ls9BEzpbpV2EPKp4ZPxiFY0NTkbaawfPnAYgCjRin7QmhPfrwPvTqqxHD8JIySEQiAIhRaG1tRO6QWh04cQsuWlkAC2/x0OMU0+vCzJoKVimy+Tw1fMU/5heDV26hPTVyoJfwXYeyxwY/3oR9HlZiNn4RRUgIhrGhnPx1OsYw+/Na1lfB83KeGr5iEbiCImCoxA088EbhhxlenHpO12eNESQmEsMLc/XY4SR99ZHdk0fxcs6+6NhOeXtTb+RSL0A0MUVMl5sANM146df3MtWVLC1obW2OZYiUKSkYgZHdk0XHCOBJXdJh7ojscn/6Y2szALLbDaV0HPYpPutANFD/eRvmEYJhx431YSjnRvFASAmHhCwsx99m5pseDCHPXOpzVq5XPc+e6719D95UX4I9pNAvT47SuEy1Uk47ZAh9eiJlhxq2WoNTWBi96gZDdkcUT7U8YruAFBBvm7qd/jcRXXoA/ptUMwG1dy1F8RGSzyjM/dEjp0JctUxbAcauvI4qdYcaNV5LQ2URCIiGLXiC0bGkxFQYAAjUi+elfI/GVF+CPaTYDSFEqlgY7u1W9iOgcIvoxEe0lov8iolGhFzJMrEYiTtaB1MMcOynuxitJmM0xQZGQiRII+unbsO8Pw7DvD7OdylmNWNND0oF2UH7610h85d2mbDTAzOuj7Za22AmD3t5e3HvvvXjxxRexe/durFmzBrt3784/7S4A7zNzPYClAL4XekHDxGwkMmeO+2uJ8AAQjBuvJGGptRMUCZkYgZA/fevq7kJXd5ftVM5sRECgQDMiAv7cT0P3lV+40Di1cUWFq2l//jrVKUr1j6ripn/dunUr6uvrUVdXh8rKSsyaNQvr1q3LP+0mAG3q/z8F0EgGif2LBq8jjoT48bppn2Z9RxmVuWvLCYqETIxAsDNWmk3ljEYEBMI9DfcEPmJ14ymTr7oo/O4/gWgc+vomorGxER266TsR9RLRNnVbX3BxO7JZxWfciE99yvW0XwsArKqo6vc28qp/DVL16nBVr08DOAwAzHwWwAkABRZWq1W9EoWXEUdZmZJ9MSEeAE7bp1m6m17utW/L2ayymBBRbqZKPTEzuAMJEghOpmlG5xj5Ka++dbXw/EVmDBo08H91tfF7YqS6+Oxnd+c4elx00Wfx5JPtOHRoO2bOnIkHHnhAf4luZp6kbjNcF7KlxbzRHj/u+nKAGP1rkKrXbBZYsIDx1FO5gsZg8G80GyioLKtVvRKFF5fTvj7gqaeU7ybEA8BJ+9T6DqNsyJZtOZsF7rzTeMatEdMZlBCBQETXE9GbquHtQYPjvg1zTtwVzc6JYn1frTPTt4nubuNzzVQXei+bt9/+C8ybp7yoV111FTo7O8UV1mrq6nEUI0L/GpTqVXs2x47VADjcL2h+8YtOjBgxIv/0TgAjAYCIygEMAeBNSiYBrwnuenqA++4LpkwB4LR9Nl3WhD7uc3UNtLQoCySYEeMZlG+BQEQpAP8M4AYA4wDMJqJxeaf5NsyZTd80gl4lyS1uOjOHqot+nnrqKdxwww36XZ9Q1RWvE9HNZt8zVWuYdfo+3AZFLG0YlOp14NlMAdR1vU6d6sFzz63tz9WvYz2AZvX/mQD+ndlsOlUkaCORTMbdbKGrK3LPGadxA27ap+u2bNVAiWI9gxIxQ7gCwF5m3s/MPQDWQjHE6fFtmMtX/VQPqkb1oOrY5iBx05kZ9S9m1ZPJZNDe3o6vf/3r+t21zNwA4EsAHiWiS4y+a6rWMFITEAH33OO54YpY2jAow/rAM8hd1+vMmdsxfvz4/FW9ngJQTUR7AfwtgIIZcNGSH6A2eLD9dyL0nHETN+Cmfbpuy1YNNIZ2gxyY2dcGZdT0pO7zXACP5Z2zE0CN7vM+AMMMrjUfQDuA9traWk4y6TSzovku3NJp5kxm4NxXX32Vr7vuuv7PjzzyCD/yyCMF19y0aRN/5jOf4XfeeYeZmQG0c2EdrgIwM39//jZ58uTci2cySsGICgvokcz2DKeXppkWEaeXpjmz3d01Mxnmqqrcuquq8l80s2eTTueeZ1S/TraCui0GMhnmykrzRq1tRI4uF0TdppemGYtQsKWXpo1/kov26aotZzLMFRWFdVNZKeS9ssNr3bJSSt8C4TYDgfD/8s7ZZSAQqq2um/SXyqgzM+vYzpw5wxdffDHv37+fT58+zRMnTuSdO3fmXO+3v/0t19XV8R//+Mf+farwPB/AOcpHDIOiAxnHRdJpBSCnHAsaKRB0VFfbCwMjqWpCEHVLi8hQINAiZ0JKKJlMbp1VV4ciDJj9CQQRKqN+o5tKDYC3zM4pCcMc7G1zentCeXk5HnvsMUybNg1jx47F7bcXqi6+/vWv4+TJk7jtttswadIkva57LIB2Ivo9lIXKlzBzQXRVUgkifYXMk+QBK48ZPRF6zoiwWwll8OCBBrZsWTIamFdJom1QFLH7AVwMoBLA7wGMzzvnXgBPqP/PAvCM3XWLaZRFZDyYcji7NgU+RgJJqt8gZglO8Fq/SapbxziZHSxY4OJy4us2sz3DVa1VObODqtYq16pK3wSl63SIn37B9wyBlWCdrwJ4CcAf1M5+FxEtJiJtGFuyhrlsVonbMSLu9qU4EEQsQkLyjMULu2ynmYz/lYt8EpsFb9z6S8epQXqVJEFvxTDKsrIjiBgwoARmCE4NwE5xM3jzWr9JqVtXZDLmMwMPD6Oo69ZMJaCpBfTT3ABmE376hcREKgslJIlstjRtKiV11k4RHYuQoDxj8aKpCViwQNGJ64lpxG2kWE3986e5MWuQiRYInhavCDEVrVmn1dcnhYFTRMcimD0Tt5mdS5LHH1dWfJLWeGucpP/QOn2zhhdR4rvECgTPi1eEKJFDz1gaA0SvMCVyKU0rew6RtCU4Qq5aZE++G5sZHR3mxyPqJBIrEDwnTwsxFa3fzixOtiYnBLFerSgXUW1i2Gu81DOYpdqoVAhlWUy94DTzPU+ljJNKRrjSXGIFgufkaSEO2/10ZqEvsiRA+ghbYSoPEYNSM3uOnhimp5cIJohBiy1mI0Or0UlEM6/ECgTPQSgidRAO8NqZhWprEiR9hK0wFQBOOvtiVuVJFIIatFhiNjI0mzlEuNJcYgWCq4RT+tFvS0vgi3mIUPWEusiSIOkTdKSon3q16+yls4x47Nar1iCimUTERNQQdJkiG7QYjQxDHpw6IbECwXEQitHot60tsMU8RKl6QjVIC5I+IjKcmuG3Xs0SugLSWSYIHK5XDSL6JICvAfivMMoVq/QWccyh4jWAIehNWACK6MimkG7nJF4FogLTBNaR3wynZogoYibDfO65A98tK7POtuC1fhMRPBUwdhl8tboF8CiAvwTwKwANHHDdxia9RYD46RcSO0NwTMgLXIu6XaiDh+nT3e23IH91OgBCPDpE1OsrrwAffzzwua8PWL4cWLjQU5EkFjhZ9ImIPgtgJDP/IqxyxSa9RT4xcSksj+SuYVJbaxz8EZAFUeTtmppCmj1u2OBuv0M0jw7NiKd5dABw/QKKqNcVK8z3R5yGp+hgA3dKg0WflgL4st21iGg+lLVSUCvgvW26rCl6AaBn4ULgiScGXFA1fSgQuvoo0TMER/7EZlGDJ08GIoXNbheD1QXNCWgWJdKjQ4T9zczLz2y/xDs1NTU4fPhw/+fOzoL1qlMAJgD4FREdBHAVgPVGhmU2W+nPB6HEIjgqSDZXGGhElL4isQLBsT+xpnvJz9bY1RWIY39Tk+LElM/Jk8C8eTEVCgFZsEV6dIhQoaVS7vZLvDNlyhTs2bMHBw4cQE9PD9auLVivupeZhzHzKGYeBeB1ADOYuT3oskUSi2BGS4txcBoQSWBMYgWCq9GnWa8RkBQ207T09MQ0GjYg9zfRHh1+A9S0WbjT/RLvOFn0KSoiiUXIR7MZWCXRiiAwJrE2BFejz2zWfMWnAKSw1SVjGQ2r9awtLUoBa2sVYeBTf9na2JpjQwDEuaF6QbMTrFihqIlSKUUYSPtBMEyfPh3T8xwTFi9ebHguM38hhCIBiEEApeZDbRU6H1H6isTOEFyNPq2G5QFIYatLurldqI4HASUtG1Q+qP//6kHVvjw6RNTH448DZ88qs/SzZ6UwKGbM7ASBxSI4baB2eVSIgHvuiSQeIbECwVUQlNWwPAAp3NoKVFQU7q+sdJfYLtRcRoLR9LRd3QMzs+6z3d6vl/D6kISLlZ3AVwClWafvpoFa9UfptJJiPKqRitcAhqA3JwEojoOgzKKaysoCW6g3k2Gurh64VXW1u1s4CcRCjFdMSy9N5wT/aFvqOylPQWshxxcyswxMC5Kg69as/aWXppnZYwClVbSomwYacGP20y+Q8v340dDQwO3tghwOnOjsqqqiDxvXUVZmnhm3r0/7n95gZk/5X4TWrwFl3ykDw7ptVVVUOVYhOakP0Xit36DrthgIum7N2h+B0Pdtjw3GzAicTiujfqcN1Kg/Etj/+OkXEqsyckW+z6KRn2HE6yjmJwIrtDWcBvBXSKXqceWVV+LgwYP9R4jom0S0l4jeJKJpIRbbFCf6WDeeHaW42JDEO4HYCaziddw00DjmMFIpDYEA5BpNzYaUEbkAGSUCW7hwd54n6FMoLz8fq1btxd/8zd/gG9/4BgCAiMYBmAVgPIDrATxORJF71hvpaY1w6tkRw8SQkhgTSKJFq07fbQON6cpzpSMQ9Jg92LKySHKJbN26FfX19airq0NlZSVmzZqF3t51OYOIT3xiHVpamtHUBMycORNbtmzRvn4TgLXMfJqZDwDYC+CK0ApvQn7OmJSJjHI6YjOKLxw0yPx8K2KSNkYSIIHkLDJLmdvRoUSjnjo1oH2I0ajfDaUpEMzyS/T2enZh8dPJmCUC0w8iLrnkCO6+WzmnvLwcQ4YMAZQ4kk8DOKy7XKe6rwAimk9E7UTU/t577zkvoEf0ie7abmkTMmLr1jkqeQk2l95KpUN+okXf+Yv0qh5AEQaa3UDLf9LbOzAzSJgwAEpVIJils9DjwqZg1MnMnau0FyfCwciwn58IzMT4zwCMVuk2PjmAnDBOETFiE7GOT6gr0UmKD22Ulk6bp5xIcIMqTYGg0W3jF+/QpmDUyWhtxckI1EEisJxzzp49ixMnTgBAL5QZwUj9qQDeclTwfALWpfgdsYnIwRdyNnRJsWKVcgJIbIMqXYHgZNV1hy4sds/ebsDgIBEYZsyYgba2NgDAT3/6U1xzzTXaofUAZhHROUR0MYDRALY6KrieBOhS/HgaabLObFAnvZUkrjKg2mVEDKpBBW0A8xrAEPQWeHAPkXFwiNnyZBboA9DMNiLra7zwwgs8evRorqur44cffpiZmb/1rW/xunXrmJm5u7ubZ86cyZdccglPmTKF9+3bp191qgXAPgBvAriBvdRvFJFfLnGyipzT7wFdDExloJ7LyqbyD394vOB7ANqhzMK2qdt6jkPbLQIQs6A/1yupCeo73BXS2QvgtW7VXxV952+0Bf5SmXWAWifo4oE6EQhO+lUt4NFp8LSfB19Qv2YC0k6ShYzbOmI2e9RfZ+C7nE4z3377d/mBBx4o+J4qEE5y3NpuERA3gWAX2Vz4hbTx+5JKBSMMrO6Z17n46RdKV2Vk5jecybj2Cz5+3Pq4E3/5yDU2CYn88uK+bazSWwegGQcPAo8+2oznn39eZDElCcN1BlSz/qOtLTjvohAMYKUrEARGC1r1mU4vG7n3S0CRX3FYmWroUKO976C6ejgAYPjw4Xj33XfNvv4J1VX3dSK62eyksF16JWJxHdkcRbRxCIO20hUIgPLwWluVCj10SOl9Fy50bbQxym5aUeFushG590sADTzqlammTp2KCRMm4IMPJkBZrVHb1rm5TC0reWG+BOBRIrrE6CSO0KVX4h9Pkc1hRxuHEK6ffIHgx+pupKdZvrwwoGDhQttL5a8fXrieuDWx0NgIbuBRr0y1efNm7Ny5E319OwHot5sAXISurqMAgKNHj+LCCy80vAYzv6X+3Q/gVwA+G3zJJWETSGSzaEKYlSRbIPhVvDtxPWVWFsG2uGZLi7I8ph63y2UWY66eyFemUjEWqjNw3nmKG29bWxtuuukmo5NSRHQOABDRMACfA7A7oGJKIsZxnEyUuU8CnpUkWyD4Vbw71ccw514zr0F8rsO4QbhR9zQ1KelQNPfmVEr5nMDo934CW5nKJUbCdtCgBzFixCaMHj0amzZtwoMPPggAaG9vx913362d9gkA7UT0ewC/BLCEmaVAKGWMBqHz5gHDhhVHciyv7klBb47cy/y6Slq5nppd08AX+GOq4tnI+HLh9+JjjxgvkMNs7NuNReDq71W7WhxHSFk8uKt6rV/pdmpPYuvWSZ8RVByCQ/z0C8meIfhVvJsluTNi6FBF+s+ZUzArqeJTWEK5sxK36p7IvYwCQNPLVg/KzRnV1d0VqnEZiG22YUnScDLtd/viWqmgQlZP+RIIRDSUiDYR0R717/km5/US0TZ1W+/nnjkVdPJkoXuPm57YyEjT2GhsEe7qssxfMpIP+bL1RO5lFBBNlzVhcOXggv1hGpclEg3fbtBOB5tOX1wrO2gEwUl+ZwgPAtjCzKMBbFE/G9HNzJPUbYbJOfbkV1BXl9IDV1d774nzh46bNyuLXJ97rquiUbrW1wg0Fl5GAREX47KktBHiBu1Uq2D04hqN9q1UAxGoDfwKhJsAtKn/twEwDdwRglEF9fQAgweL1wXYeR/pEeAOVIxeRhpxMS5LShshbtD5WoXqamdaCrPRvpnW4dChSNQGfgXCRcx8FADUv8bO3KKiPcOqoJYW5aE5obpaiC9wjJdZ9U0gyxlKJHnYqYOEzVT1WoVjx4CVK+1fXLPRvlnW1NraSNQG5XYnENFmAH9mcMjNvKWWmd8iojoA/05EO5h5X/5JzLwCwAoAaGhoKOyRa2uNJaroCnIjYAYP9tRra7NFbX1ubYGlYhAA+Wj+3C1bWnDoxCHUDqlFa2NrvIJ+JIlGUwdpM4COEx2Yt24e7nvxPhzvPo7aIbUYOmgourq7Cr7re6bq5MU161O0Fdb0wkI/w5g/3/xYANjOEJh5KjNPMNjWAXiHiIYDgPrXMCEMi4r2DEuv4kbAeJidRJ7ILgKaLmtCa2MraofU4tCJQ2jZ0hJJXiNJcWKkDurp7UFXd1e/veCDP31Q8L3QZqpmfYo2ozCaYUSgNvCrMloPoFn9vxkGSWKI6Hxh0Z5hVZAbd1QPs5NidDG1I+q8RpLixonap5d7cz4TCM2XN6PpsqbgkzBaDWatfKJD9pf2KxCWALiWiPYAuFb9DCJqIKIn1XPGQmS0ZxgVlL+YthkeZyfF6mJqRdR5jZJAHDLDJhUvah8GY8OeDeEMVhJiJPQlEJi5i5kbmXm0+ve4ur+dme9W/3+VmS9j5svVv0+JKHgOQQRvaILHKkud4HTZxeBiakYUrqdRppxxi5xB+cPIccEJmvoy0MGK1hDnzlU+r14d2+jIZEcqA8Er5K10fx4faDG7mJoRtutp0uw0xTiD2rhxI8aMGYP6+nosWbKk4DgR/S0R7Sai7US0hYhspuTm5GcrrR5UjYqyCtvvaTYtI4QMVhLWEJMvEIJWyAvsvfUDhUGD/MXTJY3po6e72u+XpNlpii14r7e3F/feey9efPFF7N69G2vWrMHu3QWa4t8BaGDmiQB+CuD7Xu+X3ZHN8WJbdsMyrLx5paWA0AzKgQ5WEtYQky8QglbIC9L9GQVZd3fHevYolA17Nrja75ek2WmKLXhv69atqK+vR11dHSorKzFr1iysW5frc8LMv2Rmrbd8HUCNl3uZqdsA9KezPvbAsRwBoV/vINA4mYQ1xOQLhDAU8gIM2QkbKAgn7BFwkuw02R1ZnOw5WbA/ycF7R44cwciRI/s/19TU4MiRI1ZfuQvAi0YH7AJWnarbzNY7CHRxnCQ1RBSDQEiIQt5sQNDRcRzXXnstRo8ejWuvvRbvv/9+wTnbtm3D1VdfjfHjx2PixIn48Y9/3H+MiFYR0QFd8sBJQf0GP4Q9Ak5Is+gf3eYHTFUPqo7fil0uYINIfzJx0CCiOQAaAPwfk2tZLk8qYrDheHEctySlIaokXyAkxJ3LbEDwqU8tQWNjI/bs2YPGxkZD41tVVRWefvpp7Nq1Cxs3bsT999+PDz7ICbL5ui554LZAfoBPwk5fkZBmYTi6BYDBlYMTKwwAZUZw+PDh/s+dnZ0YMWJEwXlENBVK1oMZzHzay71irW5LSkNUSb5AABKR7N5soFBVtQ7NzUpsX3NzM55//vmC71566aUYPXo0AGDEiBG48MILYZjrKcbop+UAkKJU/7Q+KNfKBDSLojMma0yZMgV79uzBgQMH0NPTg7Vr12LGjNxEx0T0WQA/hCIMDLMcOCH2ubKS0BBVikMgALF3OjcbKHR3v4Phw4cDAIYPH45337V+L7Zu3Yqenh5ccskl+t2tquveUi0q3Ajb5IEBozfgaVGjmgFw4ZL/DOTxxbVZaEFoDOMkikMHDQ25RGIpLy/HY489hmnTpmHs2LG4/fbbMX78eDz00ENYv75/SZT/A2AwgJ/4WSslUBtAiWGb3C4RaC48mtVW8/UFYiGNp06dirfffhuAkgtv3Dio/7sbwRw9ehRz585FW1sbysr6Zfk3AbwNoBJKYsBvAFhs9H3b5IEhYGgA/BhY/sIeoOPPAYh7fHFtFvmJ2IqV6dOnY/r0XLfixYsHmiYzTxV1r6bLmuIrAMwyWcaQ4pghxNyFZ/Pmzdi5c2fBdtNNN+Giiy7C0aNHASgd/oUXGmcQ//DDD3HjjTfi4YcfxlVXXdW/n5mPqkupngawEsAVIfwkzxiqQipPATd+FbhsYPgu4vHFtVmY2Q30dHV3yShlD0Sa/sNoOioD0yIgYb6+embMmIG2NmWNoba2Ntx0000F5/T09OCWW27BHXfcgdtuuy3nmC7bLEFZoGhn4IX2gamhr/IU0JjbU/t5fNms9dojUeLUPiBTV7gj0vQfZh3/ffd5G5VEpOssDoGQMF9fPQ8++CA2bdqE0aNHY9OmTXjwQWUV0vb2dtx9990AgGeeeQYvv/wyVq1ahUmTJmHSpEnYtq3fmShLRDsA7AAwDMDDEfwMx1ga+obkdpReHl82CwwbBsyZY35O1M3CqfdL0lNXhE2k6T/MpqNdhesvALAelWSzwLx5ucJl3rxQhEJxCIQE+PqaCfzq6mps2bIFe/bswZYtWzB0qGJMbGhowJNPKglj58yZgzNnzmDbtm3926RJSrgBM1+jJg2cwMxzmLkwwilmlJFJszsx0FF6eXzaIM3sHfR6XdG4ScTWcaIDw74/TM4UHBCpx5bbaafVqOS++5SlgfX09Cj7A6Y4BELMfX0TpkYMDG1K38d9hQd7qoAtSk+dSnl7fEaDtHyiaBb5em0AOV4xgysHW36/q7sLdz5/pxQKNkQaj2DWwVdXux+smo1orEY6gigOgQAY+/rGwOcwmwWam+Np3Aybgil9TxXABHyQBn6+AtjRhKoqoK3NW6dtN0jzkaDWM3Z5dlbfuhof93xse50zfWek+siGSOMRzLQUy5bFerCaT/EIhHxiMCzXitDba3w8auNm2BRM3StPATtmASt/BdrZ5PtdsZqFR6UqstNrt2xpMY1FyCfpwWpBE2k8gpWWwm1gWnW1u/0CKY44BCOsfA5Dks52KoyojZthUzukFh0n8lx/xJ5ZlQAADbBJREFUJq5B+n+9ioP3H/R9/dbWwjXJAeU9WrYsmkGZlV47uyNbWB8WxCIVQ8yJNB5B6/z9smwZcOedwJkzA/sqKpT9AVO8M4QYuKJa3SoOxs2wCXpKbzRIy2SAY8eim6GbdeJVFVWY++xcx9epKKuITyoGSbA0NQErV+Y25JUrQ2nExSsQzIbfZWWh2RTMiuDVaJp0wpjSxy1tjJEQrCirwMdnPnasKqoeVI2VN6+MbyRuDCi69agjasjFKxCMjDyAotAPyaZgZmfyajQtBgJLMxxTjJZ21PI42UEgZG7N4NgDx4q+nvwgKiCt6ISKB4pXIOTrD1KpwnMCdvWJuTesJCQ0Ibj61tXoPttt7HZrAIOlIHCAiIC0SKOcLQsWrqdk8QoEIHfa1WfyEnZ0BFrhcVNhxBkvbV+LTCYa2IYNs//uT37yE4wfPx5lZWVob283PY+IrieiN4loLxE96OoH5eEkh5EeLVW4xBoRAWmRRjmbkc0qxmW9p+SddwYqFIpbIOgxU+gTyYixGODFS1iL8M+P1+nqsn9vJkyYgGeffRaf//zn7Yr2zwBuADAOwGwiGufoB+WX1aVHEQCc7DkZ/Qg1AYgISIvluhT33ZfraQQonwOMWC4dgWCk0CdSeh89pRgxFgO8ZCZtaSmM8Nc4c0YJCDQTCmPHjsWYMWPsinUugL3MvJ+ZewCsBVCYfdAGTR3hlq7urnioLWKOCO+1WK66FkHEcukIBCOFvsG6rwD8p9mM44osMceLl7DdY+rt9T3hqwRwWPe5E8CnjU60WnzIrapIT+RqiwQgwnst9quuhUTpCASgUKGfNtHReo0Yi0F0dFIZarJAmNWjsH9MU3Hq1ATceecETJgwsK1bt85rMQEY+4paLQTvV+0gI5Tt8eu9JsQlWvRgsMykezbbL4DijVR2glFoq5+IsRhERyeRbBb48EPjY3kLbuXQ2qrYEMzURsBmAMDZs8BOb6tE9AAYqftcA+AttxcxjNB2QdKX00wKvqKcg1iez8wRxmy/AEprhpCPaL/QGERHJ5GWlkLbmUZbm/lAq6kJ+NGP7FO8+EgR8jGA0UR0MRFVApgFwPW6v27SXRvxUc9H0o4Qd4JYns9Mg2G2XwClLRAAsX6hCV6oJ0qs5KXdO9XUpKSmYFbSVDjNNPzcc8+hpqYGr732Gm688UZMmzYNAPDWW2/lrwP8VQAvAfgDgGeYeZezX6Uro04d4YWe3h5pR4g7QQwGI1jnRQoEkXq/BCzUE0fs5KUWKmL3aNxM+G655RZ0dnbi9OnTeOedd/DSSy8BAEaMGIENGzb0n8fMG5j5Uma+hJk9P0hNx72gYYGn70s7Qswxa8RDh3rvXyKIbC1tgSDaCCxDkz1hlmVEj7aK4LBh1u9WnAMBszuyaPt9m6fvllGZVBsFgLB0FUaNuLJSMY756V9CbtClLRCC0PvFuUeKKZocPfdc6/N6ehQX7Px3Kymevn7cT3u5V8YkCEZougqjweAnP1loHIt5nFNpCwRpBI4VZmEhZpw6pQRtJsXT16/aR8YkiEV4uor8weDx48bnxbh/KW2BYGcEDmHoefz4cVx77bUYPXo0rr32Wrz//vuG56VSKUyaNAmTJk3CjBkz+verHjD/RUR7iOjHqjdM4nCyHrIRXV3JWZ5URNSrtCWIQ3i6ivz+wktwTcSUtkCwMgKHFGS2ZMkSNDY2Ys+ePWhsbMSSJUsMzxs0aBC2bduGbdu2Yf36HM/H7wFYysyjAbwP4C6hBQwJ0YOmOA7CnLqfpiiF6kHGvrRy1TRxCE1XYdRffPSRstKZnpg7mfgSCER0GxHtIqI+ImqwOE9YxkihWBmBg7AvGLBu3To0NzcDAJqbm/H888+7vcQ1AH6q/t8G4GZxpQsPJ4MmNwGacRyEGa2NUJnKndBVVVSh7ZY2LLthmUylEDBC01UY9Rc9PcCnPpUsJxNm9rwBGAtgDIBfAWgwOScFYB+AOii5YX4PYJzdtSdPnsyRQsSsyPrcjUjobYYMGZLz+bzzzjM8L5VK8eTJk/nKK6/k5557jpmZAWyDknxNq+uRAHay+fOaD6AdQHttba3Q3+GXTIa5qqqwqgHmdJp5wQLm6mrjR5K/VVUp1/MLgHb28F64abuZ7RlOL00zLSJOL01zZnvG0bGkE0bdOkFYHYfUXzjBa92yUmLvAqH/ItYC4WoAL+k+fxPAN+2uGblASKeNH3B1tXKMSPnroOdpbGzk8ePHF2zPP/+8Y4Fw5MgRZmbet28fp9Np3rt3r5lA2MEOnlnk9WtAJmNctUbCwmxz+EgcEZdOqxgpuro16y/SaefXMHsBXOJHIISRy+jTKMwYeaXRiUQ0H8ooFrVRzvmzWeDkycL9FRWKXlBLP+swX8nmzZtNj1100UU4evQohg8fjqNHj+LCCy80PG/EiBEAgLq6OnzhC1/A7373OwA4C+A8Iipn5rPwmGsnLjQ1GVejU4NzKqU4dySN7I4sWra04NCJQ6gdUovWxla5UlrS8JsXLYhcSB6w1coS0WYi2mmwOc0LTwb7XGeMDA3tweTnHK+uVvSB+ZnUNLuCR4+kGTNmoK1NCVZqa2vDTTcVVuv777+P06dPAwCOHTuGV155BePG9a/T8ksAM9X/mwH4SuUZR5waiLX3J0ksfGEh5j47N35LNwpg48aNGDNmDOrr6w2dJYjoHNUzbq/qKTcq9EJ6wehd9xuUGpLN0havUwv9hmJSGVlN/ewU1x4U2ceOHeNrrrmG6+vr+ZprruGuri5mZv7Nb37Dd911FzMzv/LKKzxhwgSeOHEiT5gwgZ988klmVqaGUGwzWwHsBfATAOdwkqfeBthVfSql2BhEg4DVGpntGaZFxFiEgi29NC3894TJ2bNnua6ujvft28enT5/miRMn8q5du/qPq213IYAnlI+YBeDHHPd2a6S/FGG0EmiD8NpumcOxIZQD2A/gYgwYlcfbXTOyB2/1YFIp657Jj/7QA34efOQvlgsyGfPHEmQVBy0Q0kvThsIAi8C0KHxjpEheffVVvu666/o/P/LII/zII4/0f1YFwksAruaBfuIYAOI4t1sRtoKAr+unX/DrdnoLEXWqs4AXiOgldf8IItqgzkDOQkDGyNCwClbr7XV3rTg6wyeQpibzKOYkV7FVAFTS4w2OHDmCkSMHlpKoqanBkSNH8k/rty+q/cQJAAUBGFar0YVOUNkNYpIY05dAYObnmLmGmc9h5ouYeZq6/y1mnq47T0jGyFCwejBmechTKeP9cXSGTyiiF7eLA2adPoESH2/ABhKcqMCc6Mi+yHGwLWoEleI+JokxSztS2QirB2MmLObPj4V0L2ZiMoASilFgFIFwT8M9ifcyqqmpweHDA86FnZ2d/Z5yOjqhrkhHROUAhgAwSQAUE4JsiHFIjOlV1xT0Frmu0AwrZ3kBPsRuQInYEDTCrmKv9SsqMC3JnDlzhi+++GLev39/v1F5586d/ceh2BDuRa5R+RlOQruN4F13g59+obTXVPaCmbO82X6JMIqxin2t4xtjysvL8dhjj2HatGno7e3FvHnzMH78eDz00ENoaOjPcvMUgNVEtBfKzGBWZAV2QzE2RBUpECQSSSBMnz49fzlSLF68uP9/Zv4TgNtCLpbEAmlDkEgkEgkAKRAkEolEoiIFgkQikUgASIEgkUgkEhUpECQSiUQCQAoEiUQikahIgSCRSCQSAGpmwThCRO8B6LA5bRiUDIlhEbf7pZnZU3IXh/UrgrDrzC1W5fNUvyHWrRlxqnOzsoiu2zj95jAx+t3e+4W4CgQnEFE7MzfYnynvFxVx/w1xL58X4vSbwipLnH5zmIj+3VJlJJFIJBIAUiBIJBKJRCXpAmGFvF/siftviHv5vBCn3xRWWeL0m8NE6O9OtA1BIpFIJOJI+gxBIpFIJIKQAkEikUgkAIpAIBDRbUS0i4j6iCgQtzMiup6I3iSivUT0YBD3yLvfj4joXSLaGfS9giTsenMKEY0kol8S0R/UtnNf1GUSRVzqPMw2HJffHBZB1m3iBQKAnQBuBfByEBcnohSAfwZwA4BxAGYT0bgg7qVjFYDrA75HoERUb045C+DvmHksgKsA3BujsnkmZnW+CiG04Zj95rBYhYDqNvECgZn/wMxvBniLKwDsZeb9zNwDYC2AmwK8H5j5ZcR9sXF7Qq83pzDzUWb+rfr/RwD+AODT0ZZKCLGp8xDbcGx+c1gEWbeJFwgh8GkAh3WfO1EcnUfQJKLeiGgUgM8C+K9oSyKERNS5YErxNwdGItZUJqLNAP7M4FALM68L+vYG+6Svrj2xrzciGgzgZwDuZ+YPoy6PAGJf5wFQir85MBIhEJh5aoS37wQwUve5BsBbEZUlScS63oioAoowyDLzs1GXRxCxrvOAKMXfHBhSZWTPbwCMJqKLiagSwCwA6yMuUxKIbb0REQF4CsAfmPmfoi6PQGJb5wFSir85MBIvEIjoFiLqBHA1gBeI6CWR12fmswC+CuAlKMbHZ5h5l8h75ENEawC8BmAMEXUS0V1B3i8Ioqg3F3wOwFwA1xDRNnWbHnWh/BKnOg+rDcfpN4dFkHUrU1dIJBKJBEARzBAkEolEIgYpECQSiUQCQAoEiUQikahIgSCRSCQSAFIgSCQSiURFCgSJRCKRAJACQSKRSCQq/x8GXrckWJotsgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import AgglomerativeClustering\n",
    "models = []\n",
    "models.append(('Agglomerative',AgglomerativeClustering(n_clusters=3,linkage='ward')))\n",
    "cluster_show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 半监督学习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 标签传播算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': array([[5.1, 3.5, 1.4, 0.2],\n",
       "        [4.9, 3. , 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.3, 0.2],\n",
       "        [4.6, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.6, 1.4, 0.2],\n",
       "        [5.4, 3.9, 1.7, 0.4],\n",
       "        [4.6, 3.4, 1.4, 0.3],\n",
       "        [5. , 3.4, 1.5, 0.2],\n",
       "        [4.4, 2.9, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.1],\n",
       "        [5.4, 3.7, 1.5, 0.2],\n",
       "        [4.8, 3.4, 1.6, 0.2],\n",
       "        [4.8, 3. , 1.4, 0.1],\n",
       "        [4.3, 3. , 1.1, 0.1],\n",
       "        [5.8, 4. , 1.2, 0.2],\n",
       "        [5.7, 4.4, 1.5, 0.4],\n",
       "        [5.4, 3.9, 1.3, 0.4],\n",
       "        [5.1, 3.5, 1.4, 0.3],\n",
       "        [5.7, 3.8, 1.7, 0.3],\n",
       "        [5.1, 3.8, 1.5, 0.3],\n",
       "        [5.4, 3.4, 1.7, 0.2],\n",
       "        [5.1, 3.7, 1.5, 0.4],\n",
       "        [4.6, 3.6, 1. , 0.2],\n",
       "        [5.1, 3.3, 1.7, 0.5],\n",
       "        [4.8, 3.4, 1.9, 0.2],\n",
       "        [5. , 3. , 1.6, 0.2],\n",
       "        [5. , 3.4, 1.6, 0.4],\n",
       "        [5.2, 3.5, 1.5, 0.2],\n",
       "        [5.2, 3.4, 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.6, 0.2],\n",
       "        [4.8, 3.1, 1.6, 0.2],\n",
       "        [5.4, 3.4, 1.5, 0.4],\n",
       "        [5.2, 4.1, 1.5, 0.1],\n",
       "        [5.5, 4.2, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.2, 1.2, 0.2],\n",
       "        [5.5, 3.5, 1.3, 0.2],\n",
       "        [4.9, 3.6, 1.4, 0.1],\n",
       "        [4.4, 3. , 1.3, 0.2],\n",
       "        [5.1, 3.4, 1.5, 0.2],\n",
       "        [5. , 3.5, 1.3, 0.3],\n",
       "        [4.5, 2.3, 1.3, 0.3],\n",
       "        [4.4, 3.2, 1.3, 0.2],\n",
       "        [5. , 3.5, 1.6, 0.6],\n",
       "        [5.1, 3.8, 1.9, 0.4],\n",
       "        [4.8, 3. , 1.4, 0.3],\n",
       "        [5.1, 3.8, 1.6, 0.2],\n",
       "        [4.6, 3.2, 1.4, 0.2],\n",
       "        [5.3, 3.7, 1.5, 0.2],\n",
       "        [5. , 3.3, 1.4, 0.2],\n",
       "        [7. , 3.2, 4.7, 1.4],\n",
       "        [6.4, 3.2, 4.5, 1.5],\n",
       "        [6.9, 3.1, 4.9, 1.5],\n",
       "        [5.5, 2.3, 4. , 1.3],\n",
       "        [6.5, 2.8, 4.6, 1.5],\n",
       "        [5.7, 2.8, 4.5, 1.3],\n",
       "        [6.3, 3.3, 4.7, 1.6],\n",
       "        [4.9, 2.4, 3.3, 1. ],\n",
       "        [6.6, 2.9, 4.6, 1.3],\n",
       "        [5.2, 2.7, 3.9, 1.4],\n",
       "        [5. , 2. , 3.5, 1. ],\n",
       "        [5.9, 3. , 4.2, 1.5],\n",
       "        [6. , 2.2, 4. , 1. ],\n",
       "        [6.1, 2.9, 4.7, 1.4],\n",
       "        [5.6, 2.9, 3.6, 1.3],\n",
       "        [6.7, 3.1, 4.4, 1.4],\n",
       "        [5.6, 3. , 4.5, 1.5],\n",
       "        [5.8, 2.7, 4.1, 1. ],\n",
       "        [6.2, 2.2, 4.5, 1.5],\n",
       "        [5.6, 2.5, 3.9, 1.1],\n",
       "        [5.9, 3.2, 4.8, 1.8],\n",
       "        [6.1, 2.8, 4. , 1.3],\n",
       "        [6.3, 2.5, 4.9, 1.5],\n",
       "        [6.1, 2.8, 4.7, 1.2],\n",
       "        [6.4, 2.9, 4.3, 1.3],\n",
       "        [6.6, 3. , 4.4, 1.4],\n",
       "        [6.8, 2.8, 4.8, 1.4],\n",
       "        [6.7, 3. , 5. , 1.7],\n",
       "        [6. , 2.9, 4.5, 1.5],\n",
       "        [5.7, 2.6, 3.5, 1. ],\n",
       "        [5.5, 2.4, 3.8, 1.1],\n",
       "        [5.5, 2.4, 3.7, 1. ],\n",
       "        [5.8, 2.7, 3.9, 1.2],\n",
       "        [6. , 2.7, 5.1, 1.6],\n",
       "        [5.4, 3. , 4.5, 1.5],\n",
       "        [6. , 3.4, 4.5, 1.6],\n",
       "        [6.7, 3.1, 4.7, 1.5],\n",
       "        [6.3, 2.3, 4.4, 1.3],\n",
       "        [5.6, 3. , 4.1, 1.3],\n",
       "        [5.5, 2.5, 4. , 1.3],\n",
       "        [5.5, 2.6, 4.4, 1.2],\n",
       "        [6.1, 3. , 4.6, 1.4],\n",
       "        [5.8, 2.6, 4. , 1.2],\n",
       "        [5. , 2.3, 3.3, 1. ],\n",
       "        [5.6, 2.7, 4.2, 1.3],\n",
       "        [5.7, 3. , 4.2, 1.2],\n",
       "        [5.7, 2.9, 4.2, 1.3],\n",
       "        [6.2, 2.9, 4.3, 1.3],\n",
       "        [5.1, 2.5, 3. , 1.1],\n",
       "        [5.7, 2.8, 4.1, 1.3],\n",
       "        [6.3, 3.3, 6. , 2.5],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [7.1, 3. , 5.9, 2.1],\n",
       "        [6.3, 2.9, 5.6, 1.8],\n",
       "        [6.5, 3. , 5.8, 2.2],\n",
       "        [7.6, 3. , 6.6, 2.1],\n",
       "        [4.9, 2.5, 4.5, 1.7],\n",
       "        [7.3, 2.9, 6.3, 1.8],\n",
       "        [6.7, 2.5, 5.8, 1.8],\n",
       "        [7.2, 3.6, 6.1, 2.5],\n",
       "        [6.5, 3.2, 5.1, 2. ],\n",
       "        [6.4, 2.7, 5.3, 1.9],\n",
       "        [6.8, 3. , 5.5, 2.1],\n",
       "        [5.7, 2.5, 5. , 2. ],\n",
       "        [5.8, 2.8, 5.1, 2.4],\n",
       "        [6.4, 3.2, 5.3, 2.3],\n",
       "        [6.5, 3. , 5.5, 1.8],\n",
       "        [7.7, 3.8, 6.7, 2.2],\n",
       "        [7.7, 2.6, 6.9, 2.3],\n",
       "        [6. , 2.2, 5. , 1.5],\n",
       "        [6.9, 3.2, 5.7, 2.3],\n",
       "        [5.6, 2.8, 4.9, 2. ],\n",
       "        [7.7, 2.8, 6.7, 2. ],\n",
       "        [6.3, 2.7, 4.9, 1.8],\n",
       "        [6.7, 3.3, 5.7, 2.1],\n",
       "        [7.2, 3.2, 6. , 1.8],\n",
       "        [6.2, 2.8, 4.8, 1.8],\n",
       "        [6.1, 3. , 4.9, 1.8],\n",
       "        [6.4, 2.8, 5.6, 2.1],\n",
       "        [7.2, 3. , 5.8, 1.6],\n",
       "        [7.4, 2.8, 6.1, 1.9],\n",
       "        [7.9, 3.8, 6.4, 2. ],\n",
       "        [6.4, 2.8, 5.6, 2.2],\n",
       "        [6.3, 2.8, 5.1, 1.5],\n",
       "        [6.1, 2.6, 5.6, 1.4],\n",
       "        [7.7, 3. , 6.1, 2.3],\n",
       "        [6.3, 3.4, 5.6, 2.4],\n",
       "        [6.4, 3.1, 5.5, 1.8],\n",
       "        [6. , 3. , 4.8, 1.8],\n",
       "        [6.9, 3.1, 5.4, 2.1],\n",
       "        [6.7, 3.1, 5.6, 2.4],\n",
       "        [6.9, 3.1, 5.1, 2.3],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [6.8, 3.2, 5.9, 2.3],\n",
       "        [6.7, 3.3, 5.7, 2.5],\n",
       "        [6.7, 3. , 5.2, 2.3],\n",
       "        [6.3, 2.5, 5. , 1.9],\n",
       "        [6.5, 3. , 5.2, 2. ],\n",
       "        [6.2, 3.4, 5.4, 2.3],\n",
       "        [5.9, 3. , 5.1, 1.8]]),\n",
       " 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]),\n",
       " 'target_names': array(['setosa', 'versicolor', 'virginica'], dtype='<U10'),\n",
       " 'DESCR': '.. _iris_dataset:\\n\\nIris plants dataset\\n--------------------\\n\\n**Data Set Characteristics:**\\n\\n    :Number of Instances: 150 (50 in each of three classes)\\n    :Number of Attributes: 4 numeric, predictive attributes and the class\\n    :Attribute Information:\\n        - sepal length in cm\\n        - sepal width in cm\\n        - petal length in cm\\n        - petal width in cm\\n        - class:\\n                - Iris-Setosa\\n                - Iris-Versicolour\\n                - Iris-Virginica\\n                \\n    :Summary Statistics:\\n\\n    ============== ==== ==== ======= ===== ====================\\n                    Min  Max   Mean    SD   Class Correlation\\n    ============== ==== ==== ======= ===== ====================\\n    sepal length:   4.3  7.9   5.84   0.83    0.7826\\n    sepal width:    2.0  4.4   3.05   0.43   -0.4194\\n    petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)\\n    petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)\\n    ============== ==== ==== ======= ===== ====================\\n\\n    :Missing Attribute Values: None\\n    :Class Distribution: 33.3% for each of 3 classes.\\n    :Creator: R.A. Fisher\\n    :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\\n    :Date: July, 1988\\n\\nThe famous Iris database, first used by Sir R.A. Fisher. The dataset is taken\\nfrom Fisher\\'s paper. Note that it\\'s the same as in R, but not as in the UCI\\nMachine Learning Repository, which has two wrong data points.\\n\\nThis is perhaps the best known database to be found in the\\npattern recognition literature.  Fisher\\'s paper is a classic in the field and\\nis referenced frequently to this day.  (See Duda & Hart, for example.)  The\\ndata set contains 3 classes of 50 instances each, where each class refers to a\\ntype of iris plant.  One class is linearly separable from the other 2; the\\nlatter are NOT linearly separable from each other.\\n\\n.. topic:: References\\n\\n   - Fisher, R.A. \"The use of multiple measurements in taxonomic problems\"\\n     Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\\n     Mathematical Statistics\" (John Wiley, NY, 1950).\\n   - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.\\n     (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.\\n   - Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\\n     Structure and Classification Rule for Recognition in Partially Exposed\\n     Environments\".  IEEE Transactions on Pattern Analysis and Machine\\n     Intelligence, Vol. PAMI-2, No. 1, 67-71.\\n   - Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\".  IEEE Transactions\\n     on Information Theory, May 1972, 431-433.\\n   - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al\"s AUTOCLASS II\\n     conceptual clustering system finds 3 classes in the data.\\n   - Many, many more ...',\n",
       " 'feature_names': ['sepal length (cm)',\n",
       "  'sepal width (cm)',\n",
       "  'petal length (cm)',\n",
       "  'petal width (cm)'],\n",
       " 'filename': 'f:\\\\condaenv\\\\py36\\\\lib\\\\site-packages\\\\sklearn\\\\datasets\\\\data\\\\iris.csv'}"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入数据集\n",
    "from sklearn import datasets\n",
    "iris = datasets.load_iris()\n",
    "iris"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unlabeled Number: 39\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([False, False, False, False, False,  True, False, False,  True,\n",
       "        True, False, False, False, False, False, False, False, False,\n",
       "       False, False, False, False, False, False, False, False, False,\n",
       "        True, False, False, False,  True, False, False, False,  True,\n",
       "       False, False, False, False, False,  True, False,  True,  True,\n",
       "        True, False, False,  True, False,  True, False, False, False,\n",
       "       False, False, False, False, False, False,  True, False, False,\n",
       "        True, False, False, False, False,  True, False, False, False,\n",
       "       False, False,  True, False, False, False,  True,  True, False,\n",
       "       False, False, False,  True, False, False,  True, False,  True,\n",
       "       False, False, False, False, False, False, False, False,  True,\n",
       "        True, False,  True, False, False, False, False, False,  True,\n",
       "        True, False, False, False, False, False, False, False,  True,\n",
       "        True, False,  True, False,  True, False,  True,  True,  True,\n",
       "       False, False, False,  True, False,  True,  True, False, False,\n",
       "        True, False, False, False, False, False, False, False, False,\n",
       "       False,  True,  True, False, False, False])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机选一部分点改为无标签\n",
    "labels = np.copy(iris.target)\n",
    "random_unlabeled_points = np.random.rand(len(iris.target))\n",
    "random_unlabeled_points = random_unlabeled_points<0.3\n",
    "Y = labels[random_unlabeled_points]\n",
    "labels[random_unlabeled_points] = -1\n",
    "print('Unlabeled Number:',list(labels).count(-1))\n",
    "random_unlabeled_points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  0,  0,  0,  0, -1,  0,  0, -1, -1,  0,  0,  0,  0,  0,  0,  0,\n",
       "        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, -1,  0,  0,  0, -1,  0,  0,\n",
       "        0, -1,  0,  0,  0,  0,  0, -1,  0, -1, -1, -1,  0,  0, -1,  0, -1,\n",
       "        1,  1,  1,  1,  1,  1,  1,  1,  1, -1,  1,  1, -1,  1,  1,  1,  1,\n",
       "       -1,  1,  1,  1,  1,  1, -1,  1,  1,  1, -1, -1,  1,  1,  1,  1, -1,\n",
       "        1,  1, -1,  1, -1,  1,  1,  1,  1,  1,  1,  1,  1, -1, -1,  2, -1,\n",
       "        2,  2,  2,  2,  2, -1, -1,  2,  2,  2,  2,  2,  2,  2, -1, -1,  2,\n",
       "       -1,  2, -1,  2, -1, -1, -1,  2,  2,  2, -1,  2, -1, -1,  2,  2, -1,\n",
       "        2,  2,  2,  2,  2,  2,  2,  2,  2, -1, -1,  2,  2,  2])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 标签传播算法\n",
    "from sklearn.semi_supervised import LabelPropagation\n",
    "label_prop_model = LabelPropagation()\n",
    "label_prop_model.fit(iris.data,labels)\n",
    "Y_pred = label_prop_model.predict(iris.data)\n",
    "Y_pred = Y_pred[random_unlabeled_points]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ACC: 0.9743589743589743\n",
      "REC: 0.9743589743589743\n",
      "F-Score: 0.9743589743589743\n"
     ]
    }
   ],
   "source": [
    "# 模型评估\n",
    "from sklearn.metrics import accuracy_score,recall_score,f1_score\n",
    "print('ACC:',accuracy_score(Y,Y_pred))\n",
    "print('REC:',recall_score(Y,Y_pred,average='micro'))\n",
    "print('F-Score:',f1_score(Y,Y_pred,average='micro'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
